草庐IT

Java HotSpot 枚举开销

全部标签

java - 有没有办法在 Java 中进行按位或枚举?

我正在使用状态机,当针对大量可能的状态进行测试时,代码变得非常冗长。enumMood{HAPPY,SAD,CALM,SLEEPY,OPTIMISTIC,PENSIVE,ENERGETIC;}有没有办法做到这一点:if(currentMood==(HAPPY|OPTIMISTIC|ENERGETIC){}而不是这个:if(currentMood==HAPPY||currentMood==OPTIMISTIC||currentMood==ENERGETIC){}或者在这种情况下坚持使用整数和标志会更好吗? 最佳答案 也许使用EnumSe

java - 如何获取枚举的可能项目数?

是否有一种内置方法可以使用Myenum.length,之类的方式获取Enum的项目数或者我是否必须自己实现一个函数intsize()硬编码元素的数量? 最佳答案 是的,您可以使用Enum.values()方法获取枚举值数组,然后使用length属性。publicclassMain{enumWORKDAYS{Monday,Tuesday,Wednesday,Thursday,Friday;}publicstaticvoidmain(String[]args){System.out.println(WORKDAYS.values().l

java - 如何获取枚举的可能项目数?

是否有一种内置方法可以使用Myenum.length,之类的方式获取Enum的项目数或者我是否必须自己实现一个函数intsize()硬编码元素的数量? 最佳答案 是的,您可以使用Enum.values()方法获取枚举值数组,然后使用length属性。publicclassMain{enumWORKDAYS{Monday,Tuesday,Wednesday,Thursday,Friday;}publicstaticvoidmain(String[]args){System.out.println(WORKDAYS.values().l

带有空格的Java枚举元素?

我正在研究java,我创建了一个如下的枚举:publicenummyEnum{india,russian,england,northAmerica}上面的示例在元素名称中使用空格时出现错误(即北美)。有什么建议可以解决上述问题吗? 最佳答案 您不能在标识符中间放置空格。这样做会结束该标识符,并且解析器假定接下来出现的任何内容都是该语句上下文中的有效标记。合法的地方很少(如果有的话)。传统的Java值名称是:INDIA,//OrIndia,RUSSIA,//Russia,NORTH_AMERICA;//NorthAmerica;enu

带有空格的Java枚举元素?

我正在研究java,我创建了一个如下的枚举:publicenummyEnum{india,russian,england,northAmerica}上面的示例在元素名称中使用空格时出现错误(即北美)。有什么建议可以解决上述问题吗? 最佳答案 您不能在标识符中间放置空格。这样做会结束该标识符,并且解析器假定接下来出现的任何内容都是该语句上下文中的有效标记。合法的地方很少(如果有的话)。传统的Java值名称是:INDIA,//OrIndia,RUSSIA,//Russia,NORTH_AMERICA;//NorthAmerica;enu

Java如何访问内部枚举类

publicclassConstant{......publicenumStatus{ERROR,WARNING,NORMAL}......}编译后我得到了一个名为Constant$Status.class的类文件。问题是,我如何访问枚举值。例如,我想获取ERROR状态的字符串表示形式。 最佳答案 您可以在其他地方访问它,例如importpackage.name.Constant;//...Constant.Statusfoo=Constant.Status.ERROR;或者,importpackage.name.Constant;

Java如何访问内部枚举类

publicclassConstant{......publicenumStatus{ERROR,WARNING,NORMAL}......}编译后我得到了一个名为Constant$Status.class的类文件。问题是,我如何访问枚举值。例如,我想获取ERROR状态的字符串表示形式。 最佳答案 您可以在其他地方访问它,例如importpackage.name.Constant;//...Constant.Statusfoo=Constant.Status.ERROR;或者,importpackage.name.Constant;

java - 构造函数中的枚举和静态变量

编译器禁止访问枚举构造函数中的静态字段。下面的源代码有效,它使用了一个静态字段:publicenumTrickyEnum{TrickyEnum1,TrickyEnum2;staticintcount;TrickyEnum(){incrementCount();}privatestaticvoidincrementCount(){count++;}publicstaticvoidmain(String...args){System.out.println("Count:"+count);}}输出:Count:2.但下面的代码虽然差别很小,但不起作用:publicenumTrickyEnu

java - 构造函数中的枚举和静态变量

编译器禁止访问枚举构造函数中的静态字段。下面的源代码有效,它使用了一个静态字段:publicenumTrickyEnum{TrickyEnum1,TrickyEnum2;staticintcount;TrickyEnum(){incrementCount();}privatestaticvoidincrementCount(){count++;}publicstaticvoidmain(String...args){System.out.println("Count:"+count);}}输出:Count:2.但下面的代码虽然差别很小,但不起作用:publicenumTrickyEnu

java - Java中的最大枚举元素数

Java中枚举中允许的最大元素数是多少?我想找出switch语句中的最大case数。由于switch中允许的最大原始类型是int,因此我们有从-2,147,483,648到2,147,483,647的情况和一种默认情况。但是也允许使用枚举...所以问题.. 最佳答案 来自classfileformatspec:Theper-classorper-interfaceconstantpoolislimitedto65535entriesbythe16-bitconstant_pool_countfieldoftheClassFilest